package com.mmaingenieria.MMAGestor.controller;

import java.io.IOException;
import java.util.Properties;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import com.mmaingenieria.MMAGestor.beans.Usuario;


public class InitServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	public RequestDispatcher dispatcher = null;
	public boolean usuarioLogueado = false;
	public Usuario usuarioSesion;
	private Properties propConfig;
    
    public InitServlet() {
        super();
    }

	//Metodo init que se ejecuta cuando se inicia el Initservlet
    public void init(ServletConfig config) throws ServletException{
    	super.init(config);
    	
    	//configuracion del archivo de propiedades config.properties
    	propConfig= new Properties();   	
        try{
        	String con=config.getServletContext().getInitParameter("config");//para el archivo de propiedades. coge el initparameter del web.xml
        	propConfig.load(config.getServletContext().getResourceAsStream(con));//para el archivo de propiedades     
        }catch (IOException e){
        	Logger.getLogger(this.getClass()).error("Error cargando el archivo config.properties");
		}
    }
    
    protected Properties getConfigProperties(){//para el archivo de propiedades
    	return propConfig;
    }
    
    
    //metodo get que implemetan todos los servlet hijos para que si llega algo por get le saque una jsp de prohibido el acceso.
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		try{
			dispatcher = request.getRequestDispatcher(getConfigProperties().getProperty("ruta_prohibido"));
	        dispatcher.forward(request, response);
	        Logger.getLogger(this.getClass()).warn("Intentando entrar por GET");
		}catch(Exception e){
			Logger.getLogger(this.getClass()).error("Excepcion generada al acceder por GET");
			dispatcher = request.getRequestDispatcher(getConfigProperties().getProperty("ruta_error"));//le dirijo a la pagina de error
		    dispatcher.forward(request, response);//Le digo que vaya
		}
	}

	//Metodo Post
	protected void doPost(HttpServletRequest request, HttpServletResponse response, boolean verificarUsuarioSesion) throws ServletException, IOException {
		try{
			HttpSession sesion = request.getSession(true);//cojo la sesion
			usuarioSesion = (Usuario)sesion.getAttribute("usuarioSesion");
			if (verificarUsuarioSesion == true){//Si tengo que verificar al usuario de Sesion					
				if ( usuarioSesion==null){// si el usuario de Sesion es null es que no hay usuario Logeado
					usuarioLogueado = false;
					Logger.getLogger(this.getClass()).debug("Usuario no verificado en InitServlet");
					dispatcher = request.getRequestDispatcher(getConfigProperties().getProperty("ruta_finSesion"));//Le digo a donde tiene que ir
				}else{
					usuarioLogueado = true;
					Logger.getLogger(this.getClass()).debug("Usuario verificado en InitServlet");
				}
			}
		}catch (Exception e){
			Logger.getLogger(this.getClass()).error("Excepcion generada al acceder por POST al InitServlet");
			dispatcher = request.getRequestDispatcher(getConfigProperties().getProperty("ruta_error"));//le dirijo a la pagina de error
		    dispatcher.forward(request, response);//Le digo que vaya
		}
	}

}
